package com.molichuxing.gateway.bff.user.services;

import java.util.List;
import java.util.Map;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.gateway.bff.user.entity.request.create.EnterpriseCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.EnterpriseModifyVo;
import com.molichuxing.gateway.bff.user.entity.response.EnterpriseVo;
import com.molichuxing.gateway.bff.user.entity.response.IdentityCardVo;
import com.molichuxing.gateway.bff.user.entity.response.UserVo;

/**
 * 
 * @author liyg
 * 2019-08-16
 * 用户bff服务
 * 
 */
public interface UserBffService {
	
	/**
	 * 
	 * 根据用户id获取用户信息 (包括身份证基本信息)
	 * @param userId
	 * @return 
	 */
	UserVo getUserById(Integer userId);
	
	/**
	 * 
	 * 根据订单编号获取用户信息 (包括身份证基本信息)
	 * @param orderCode
	 * @return 
	 */
	UserVo getUserByOrderCode(Long orderCode);
	
	/**
	 * 获取用户列表
	 *
	 * @param map
	 *            参数
	 * key:name String 用户名 非必填
	 * key:realName String 用户姓名 非必填
	 * key:phone String 用户手机 非必填
	 * key:source Integer 用户来源 非必填
	 * key:startTime String 注册开始时间 非必填
	 * key:endTime String 注册结束时间 非必填
	 * pageNum Integer 当前页
	 * pageSize Integer 每页显示条数
	 * @return
	 *
	 */
	Paged<UserVo> getUserList(Map<String, Object> map);
	
	/**
	 * 获取用户身份证信息
	 * @param userId
	 * @return
	 */
	IdentityCardVo getIdentityCard(Integer userId);
	
	
	/**
	 * 获取企业用户列表
	 * 
	 * @param map
	 *            参数
	 * @param key:name
	 *            String 企业名称 非必填
	 * @param key:regionId
	 *            Integer 城市id 非必填
	 *@param  key:startTime
	 *            LocalDateTime 创建开始时间
	 *@param  key:endTime
	 *            LocalDateTime 创建结束时间        
	 *@param  key:sortName   
	 *            String 排序字段 
	 *@param  key:sortWay 
	 *            String 排序方式 
	 * @param key:pageNum
	 *            Integer 当前页
	 * @param key:pageSize
	 *            Integer 每页显示条数
	 * @return
	 */
	Paged<EnterpriseVo> getEnterpriseList(Map<String, Object> map);
	
	/**
	 * 获取企业用户详情信息
	 * @param id
	 * @return
	 */
	EnterpriseVo getEnterpriseById(Integer id);
	
	/**
	 * 新增企业用户信息
	 * @param createVo
	 * @return
	 */
	Boolean createEnterprise(EnterpriseCreateVo createVo);
	
	/**
	 * 修改企业用户信息
	 * @param modifyVo
	 * @return
	 */
	Boolean modifyEnterprise(EnterpriseModifyVo modifyVo);

	/**
	 * 模糊获取企业用户信息列表
	 * @param name
	 * @return
	 */
	List<EnterpriseVo> getEnterpriseBaseList(String name);
	
}
